const app = getApp();
const { request } = require('../../../utils/request');
const api = require('../../../utils/api.js');
const codeApi = require('../../../utils/codeApi.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    loading: true,
    agentInfo: null, // 代理信息
    hasPermission: false, // 是否有权限

    // 卡密统计
    codeStats: {
      today_used: 0,      // 今日销售（已使用的卡密）
      yesterday_used: 0,  // 昨日销售
      month_used: 0,      // 本月销售
      last_month_used: 0, // 上月销售
      total_used: 0,      // 累计销售
      month_generated: 0,    // 本月拿码（生成的激活码）
      last_month_generated: 0, // 上月拿码
      stock_remaining: 0,    // 剩余库存
      stock_last_month:0,
      stock_remaining:0,
      month_count:0,
      last_month_count:0,
    },

    // 团队统计
    teamStats: {
      team_size: 0,        // 团队规模
      team_month_sales: 0, // 团队本月销售
      team_total_sales: 0, // 团队总销售
    },

    // 功能菜单
    menus: [
      {
        id: 'codes',
        name: '卡密管理',
        icon: '/assets/icons/icon-code.png',
        url: '/pages/admin/activation-codes/activation-codes'
      },
      {
        id: 'generate',
        name: '生成卡密',
        icon: '/assets/icons/icon-generate.png',
        url: '/pages/admin/create-activation-code/create-activation-code'
      },
    
      {
        id: 'stats',
        name: '销售统计',
        icon: '/assets/icons/icon-stats.png',
        url: '/pages/admin/stats/stats'
      },
      {
        id: 'stats',
        name: '激活查询',
        icon: '/assets/icons/icon-code-query.png',
        url: '/pages/admin/code-query/index'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 检查代理权限
    this.checkAgentPermission();
  },

  /**
   * 检查代理权限
   */
  checkAgentPermission() {
    // 确保用户ID存在
    const userId = wx.getStorageSync('userId');
    
    if (!userId) {
      wx.showModal({
        title: '提示',
        content: '未登录或登录已过期，请先登录',
        showCancel: false,
        success: () => {
          wx.navigateTo({
            url: '/pages/login/login'
          });
        }
      });
      return;
    }
    
    // 使用专用API检查权限
    codeApi.checkPermission(userId)
    .then(res => {
      if (res.code === 0 && res.data && res.data.has_permission) {
        res.data.agent_info.avatar = wx.getStorageSync('userInfo').avatarUrl
        // 保存代理信息
        this.setData({
          hasPermission: true,
          agentInfo: res.data.agent_info || {}
        });
        
        // 获取统计数据
        this.fetchDashboardStats();
      } else {
        // 没有权限
        wx.showModal({
          title: '提示',
          content: '您暂无代理管理权限',
          showCancel: false,
          success: () => {
            wx.navigateBack();
          }
        });
      }
    })
    .catch(err => {
      console.error('检查权限失败', err);
      
      wx.showToast({
        title: '网络错误',
        icon: 'none',
        success: () => {
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        }
      });
    });
  },

  /**
   * 获取仪表盘统计数据
   */
  fetchDashboardStats() {
    const agentId = this.data.agentInfo.id;
    if (!agentId) {
      this.setData({ loading: false });
      return;
    }

    // 获取统计数据API
    request(api.agent_dashboard_stats + '?agent_id=' + agentId, 'GET')
    .then(res => {
      if (res.code === 0 && res.data) {
        this.setData({
          codeStats: res.data.code_stats || this.data.codeStats,
          teamStats: res.data.team_stats || this.data.teamStats,
          loading: false
        });
      } else {
        this.setData({ loading: false });
        wx.showToast({
          title: res.message || '获取统计数据失败',
          icon: 'none'
        });
      }
    })
    .catch(err => {
      console.error('获取统计数据失败', err);
      this.setData({ loading: false });
      wx.showToast({
        title: '网络错误',
        icon: 'none'
      });
    });
  },

  /**
   * 导航到功能页面
   */
  navigateTo(e) {
    const url = e.currentTarget.dataset.url;
    wx.navigateTo({ url });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 每次显示页面时刷新数据
    if (this.data.hasPermission && this.data.agentInfo) {
      this.fetchDashboardStats();
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.fetchDashboardStats();
    wx.stopPullDownRefresh();
  }
}) 